unicode konfirmacny subor pre socialnu poistovnu (SR:)
Otázka od: Vlko II.
2. 6. 2004 10:42
mam take prekerne zadanie. pre xml subor vytvorit kontrolny subor, problem
je, ze
ma byt v unicode. Skusal som uz vsetko mozne, nacitavanie do widechar, do
widestring
pouzivat zo synachar konverziu CharsetConversion(s,CP1250,UCS_2); ale nech
robim
co robim vysledok mi nesedi so vzorovym prikladom. Nerobil to nahodou
niekto kto by
mi vedel poradit?
Vopred dakujem
Vlko
zadanie prikladam:
Sposob vytvorenia konfirmacneho suboru pre ?Mesacny vykaz poistneho a
davok NP? v XML formate
Format konfirmacneho suboru: textovy subor
Kodova stranka suboru: Win1250
Struktura textoveho suboru:
? kazda informacia tvori samostatny zaznam
? zaznamy su oddelene znakom konca riadku typu Windows (t.j. hexadecimalne
?0a 0d?)
Popis jednotlivych zaznamov:
1. Nazov APV pre mzdovu/personalnu agendu, z ktoreho je XML subor vystupom
2. Verzia APV
3. Nazov zhotovitela APV
4.? n.: kontrolne cislo v dekadickom tvare
Sposob tvorby kontrolnych cisiel:
1. Nacitanie obsahu suboru do pola bajtov v kodovej stranke Unicode.
2. Pre kazdych 100 riadkov sa vytvori sucet vsetkych bajtov vratane tych,
ktore zastupuju koniec riadku, v desiatkovej sustave.
3. Zo zvysnych riadkov, ktorych pocet je mensi ako 100, bude vytvarane
posledne kontrolne cislo.
Priklad:
XML subor s poctom riadkov 1053 bude obsahovat:
? 3 riadky hlavicky,
? riadky s kontrolnymi cislami v pocte zaokruhleneNahor(pocetRiadkov/100),
tu: 11 riadkov
o vsetky kontrolne cisla okrem posledneho (ak pocet riadkov nie je
delitelny 100) budu suctom Unicode hodnot znakov 100 riadkov
o posledna kontrolna cislica bude suctom Unicode hodnot poslednych riadkov
pocetRiadkov modulo 100, tu. sucet z poslednych 53 riadkov.
<spVykazPoistneho>
<typDoc>MVP00001</typDoc>
<nazov>Potraviny ? Novak</nazov>
</spVykazPoistneho>
60 + 115 + 112 + 86 + 121 + 107 + 97 + 122 + 80 + 111 + 105 + 115 + 116
+ 110 + 101 + 104 + 111 + 62 + 13 + 10 +
9 + 60 + 116 + 121 + 112 + 68 + 111 + 99 + 62 + 77 + 86 + 80 + 48 + 48
+ 48 + 48 + 49 + 60 + 47 + 116 + 121 + 112 + 68 + 111 + 99 + 62 + 13 + 10 +
9 + 60 + 110 + 97 + 122 + 111 + 118 + 62 + 80 + 111 + 116 + 114 + 97 + 118
+ 105 + 110 + 121 + 32 + 45 + 32 + 78 + 111 + 118 + 225 + 107 + 60 + 47
+ 110 + 97 + 122 + 111 + 118 + 62 + 13 + 10 +
60 + 47 + 115 + 112 + 86 + 121 + 107 + 97 + 122 + 80 + 111 + 105 + 115
+ 116 + 110 + 101 + 104 + 111 + 62 + 13 + 10
kontrolne cislo = 8983
Vzor: XML subor: SPVykaz_200401_2.xml
Konfirmacny subor: SPVykaz_200401_2_conf_2.txt
--
--------------
mail: vlko_@pobox.sk
web: http://vlko.zilina.net
Odpovedá: Zbysek Hlinka
2. 6. 2004 10:52
> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz] On Behalf Of Vlko II.
> Sent: Wednesday, June 02, 2004 11:32 AM
>
> mam take prekerne zadanie. pre xml subor vytvorit kontrolny
> subor, problem je, ze ma byt v unicode. Skusal som uz vsetko
> mozne, nacitavanie do widechar, do widestring pouzivat zo
> synachar konverziu CharsetConversion(s,CP1250,UCS_2);
A zkousel jsi na zacatek xml dat tohle?
<?xml version="1.0" encoding="unicode"?>
S pozdravem
Zbysek Hlinka
E-mail: hlinka zavin. hlinka.cz
Phone: +420 603 551 282
Odpovedá: Vlko II.
2. 6. 2004 11:07
On Wed, 2 Jun 2004 11:52:17 +0200, Zbysek Hlinka <konference@hlinka.cz>
wrote:
> A zkousel jsi na zacatek xml dat tohle?
> <?xml version="1.0" encoding="unicode"?>
problem je v tom, ze xml ma byt v kodovani win1250, problemovy je prevod z
win1250 do unicode
--
--------------
mail: vlko_@pobox.sk
web: http://vlko.zilina.net
Odpovedá: Zbysek Hlinka
2. 6. 2004 11:50
> -----Original Message-----
> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz] On Behalf Of Vlko II.
> Sent: Wednesday, June 02, 2004 11:58 AM
>
> > A zkousel jsi na zacatek xml dat tohle?
> > <?xml version="1.0" encoding="unicode"?>
>
> problem je v tom, ze xml ma byt v kodovani win1250,
> problemovy je prevod z win1250 do unicode
A co treba tohle?
MultiByteToWideChar
S pozdravem
Zbysek Hlinka
E-mail: hlinka zavin. hlinka.cz
Phone: +420 603 551 282
Odpovedá: Petr Vones
2. 6. 2004 12:16
From: "Vlko II." <vlko@zilina.net>
> mam take prekerne zadanie. pre xml subor vytvorit kontrolny subor, problem
> je, ze ma byt v unicode. Skusal som uz vsetko mozne, nacitavanie do
Kodovani resi parser/dom. V Delphi je to IXMLDocument, nastav Encoding na
UTF-16 coz je Unicode.
Petr Vones
Odpovedá: Vlko II.
2. 6. 2004 14:03
On Wed, 2 Jun 2004 12:52:25 +0200, Petr Vones <pvones@vol.cz> wrote:
>> mam take prekerne zadanie. pre xml subor vytvorit kontrolny subor,
>> problem
>> je, ze ma byt v unicode. Skusal som uz vsetko mozne, nacitavanie do
>
> Kodovani resi parser/dom. V Delphi je to IXMLDocument, nastav Encoding na
> UTF-16 coz je Unicode.
uz to je vyriesene, troska sme sa nepochopili, ten xml subor mal zostat v
kodovani
win 1250 len ten kontrolny subor mal brat hodnoty z unicode, teda bolo
treba previest
win 1250 na unicode (ucs_2) az neskor som zistil, ze chyba bola nie v
algoritme
ale v priklade, ktory bol v kodovani utf8, aj ked dokumentacia pisala, ze
ma byt
win1250, nuz je to statna sprava, tam sa to stava
v pripade, ze by to niekto na slovensku potreboval dany kod mu poslem na
mail.
vlko
--
--------------
mail: vlko_@pobox.sk
web: http://vlko.zilina.net
Odpovedá: L?ikola Petr
2. 6. 2004 14:24
no pokud muzu tak bych poprosil o kousek Tveho kodu, zajima me cast prevodu do
unicode.
Dekuji
Petr Sikola
> On Wed, 2 Jun 2004 12:52:25 +-0200, Petr Vones <pvones@vol.cz> wrote:
>
> >> mam take prekerne zadanie. pre xml subor vytvorit kontrolny subor,
> >> problem
> >> je, ze ma byt v unicode. Skusal som uz vsetko mozne, nacitavanie do
> >
> > Kodovani resi parser/dom. V Delphi je to IXMLDocument, nastav Encoding na
> > UTF-16 coz je Unicode.
>
> uz to je vyriesene, troska sme sa nepochopili, ten xml subor mal zostat v
> kodovani
> win 1250 len ten kontrolny subor mal brat hodnoty z unicode, teda bolo
> treba previest
> win 1250 na unicode (ucs_2) az neskor som zistil, ze chyba bola nie v
> algoritme
> ale v priklade, ktory bol v kodovani utf8, aj ked dokumentacia pisala, ze
> ma byt
> win1250, nuz je to statna sprava, tam sa to stava
>
> v pripade, ze by to niekto na slovensku potreboval dany kod mu poslem na
> mail.
>
> vlko
>
>
> --
>
>
> --------------
> mail: vlko_@pobox.sk
> web: http://vlko.zilina.net
>
>
Odpovedá: Vlko II.
2. 6. 2004 14:23
On Wed, 2 Jun 2004 14:46:38 +0200, L?ikola Petr <developer@efg.cz> wrote:
> no pokud muzu tak bych poprosil o kousek Tveho kodu, zajima me cast
> prevodu do unicode.
tak ma napadlo, ze to nie je az take dlhe som nasiel na webe:
function StringToWideString(const s: AnsiString; codePage: Word):
WideString;
var
l: integer;
begin
if s = '' then
Result := ''
else
begin
l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), - 1,
nil, 0);
SetLength(Result, l - 1);
if l > 1 then
MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]),
- 1, PWideChar(@Result[1]), l - 1);
end;
end; { StringToWideString }
a ako kodovu stranku pouzivam CP_THREAD_ACP co by malo byt win1250, teda
predpokladam, ze malo
--
--------------
mail: vlko_@pobox.sk
web: http://vlko.zilina.net